package br.unipar.blog.controller.cadastrousuario;

import br.unipar.blog.entity.Usuario;
import br.unipar.blog.manager.usuario.CadastroUsuarioManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;

public class CadastroUsuarioBuilder {
    
    @Autowired
    private CadastroUsuarioManager cadastroUsuarioManager;
    
    public void build(CadastroUsuarioVo vo) {
        Assert.notNull(vo, "Não foi possível recuperar os dados da tela.");
        Assert.hasText(vo.getNome(), "Nome é um campo obrigatório.");
        Assert.hasText(vo.getEmail(), "E-mail é um campo obrigatório.");
        Assert.hasText(vo.getConfirmacaoEmail(), "Confirmação de e-mail é um campo obrigatório.");
        Assert.hasText(vo.getSenha(), "Senha é um campo obrigatório.");
        Assert.hasText(vo.getConfirmacaoSenha(), "Confirmação de senha é um campo obrigatório.");
        Assert.isTrue(vo.getEmail().equals(vo.getConfirmacaoEmail()), "Confirmação de e-mail inválida.");
        Assert.isTrue(vo.getSenha().equals(vo.getConfirmacaoSenha()), "Confirmação de senha inválida.");
        
        Usuario usuario;
        if (vo.getId() == null) {
            usuario = new Usuario();
        } else {
            usuario = cadastroUsuarioManager.buscarPeloId(vo.getId());
            usuario.setVersion(vo.getVersion());
        }
        usuario.setNome(vo.getNome());
        usuario.setEmail(vo.getEmail());
        usuario.setSenha(vo.getSenha());
        
        cadastroUsuarioManager.salvar(usuario);
    }
            
}
